package edu.gatech.cs2340.aperturescience.backend.category;

import java.util.Date;
import java.util.List;

import android.location.Location;

/**
 * CategoryDataSource interface contains the essential methods to manage a Categories database
 * 
 * @author ApertureScience
 * @3/19/2012
 */
public interface CategoryDataSource
{
	/**
	 * opens the database
	 */
	public abstract void open();

	/**
	 * closes the database
	 */
	public abstract void close();

	/**
	 * updateCategory initializes a new Category for a user
	 * @param userid - the user
	 * @param category - the new Category
	 */
	public abstract void updateCategory(int userid, String category);
	
	/**
	 * getAllCategories returns a list of Categories that have been saved by the user
	 * @param userid - the user
	 * @return - a list of Categories
	 */
	public abstract List<Category> getAllCategories(int userid);

	/**
	 * deleteCategory deletes a specified Category
	 * @param userid - the user
	 * @param category - the specific Category to be deleted
	 */
	public abstract void deleteCategory(int userid, String category);
	
	/**
	 * isEmpty returns a boolean value indicated whether any Categories have been generated
	 * @param userid - the user
	 * @return - a boolean value indicating the existence of any Categories
	 */
	public abstract boolean isEmpty(int userid);
}